package com.yn.xr.middleware.news.rmi;

import java.util.List;

import com.yn.xr.common.page.Page;
import com.yn.xr.news.mode.NewsComment;
import com.yn.xr.news.mode.NewsInfo;

public interface NewsInfoRmiService
{
    /**
     * 根据新闻ID查询新闻  
     * <一句话功能简述>
     * <功能详细描述>
     * @param newsId
     * @return
     * @throws Exception
     * @see [类、类#方法、类#成员]
     */
    public NewsInfo queryNewsInfoById(Integer newsId) throws Exception;
    
    /**
     * 新闻分页查询  
     * <一句话功能简述>
     * <功能详细描述>
     * @param newsInfo
     * @param pageNum
     * @param pageSize
     * @return
     * @throws Exception
     * @see [类、类#方法、类#成员]
     */
    public Page<NewsInfo> queryNewsInfoPage(String hql, Object[] queryParams, int pageNum, int pageSize) throws Exception ;
    
    /**
     * 保存新闻
     * <一句话功能简述>
     * <功能详细描述>
     * @param newsInfo
     * @return
     * @throws Exception
     * @see [类、类#方法、类#成员]
     */
    public void saveNewsInfo(NewsInfo newsInfo) throws Exception;
    
    /**
     * 编辑新闻
     * <一句话功能简述>
     * <功能详细描述>
     * @param newsInfo
     * @return
     * @throws Exception
     * @see [类、类#方法、类#成员]
     */
    public void editNewsInfo(NewsInfo newsInfo) throws Exception;
    
    /**
     * 删除新闻
     * <一句话功能简述>
     * <功能详细描述>
     * @param newsInfo
     * @return
     * @throws Exception
     * @see [类、类#方法、类#成员]
     */
    public void deleteNewsInfo(Integer newsId) throws Exception;
    
    
    /**
     * 新闻分页查询  (根据推荐时间排序)
     * @param newsInfo
     * @param pageNum
     * @param pageSize
     * @return
     * @throws Exception
     * @see [类、类#方法、类#成员]
     */
    public Page<NewsInfo> queryNewsInfoRecommendPage(NewsInfo newsInfo,int pageNum,int pageSize) throws Exception;
    
    /**
     * 发布新闻
     * @param newsId
     * @return
     * @throws Exception
     * @see [类、类#方法、类#成员]
     */
    public void publishNewsInfo(Integer...newsId) throws Exception;
    
    /**
     * 取消发布新闻
     * @param newsId
     * @return
     * @throws Exception
     * @see [类、类#方法、类#成员]
     */
    public void cancelPublishNewsInfo(Integer...newsId) throws Exception;
    /**
     * 推荐新闻
     * @param newsId
     * @return
     * @throws Exception
     * @see [类、类#方法、类#成员]
     */
    public void recommendNewsInfo(Integer...newsId) throws Exception;
    
    /**
     * 取消推荐新闻
     * @param newsId
     * @return
     * @throws Exception
     * @see [类、类#方法、类#成员]
     */
    public void cancelRecommendNewsInfo(Integer...newsId) throws Exception;
    
    /**
     * 获取新闻的热度排行
     * @return
     * @see [类、类#方法、类#成员]
     * @param
     */
    public List<NewsInfo> getNewsInfoHeatRank(Integer number, Integer platform, Integer type)throws Exception;
    
    /**
     * 根据新闻id和新闻类型获取获取上一条新闻
     * <一句话功能简述>
     * <功能详细描述>
     * @param newsId
     * @param type
     * @return
     * @see [类、类#方法、类#成员]
     * @param
     */
    public NewsInfo getNewsInfoNext(Integer newsId, Integer type, Integer platformId)throws Exception;
    
    /**
     * 根据新闻id和新闻类型获取下一条新闻
     * <一句话功能简述>
     * <功能详细描述>
     * @param newsId
     * @param type
     * @return
     * @see [类、类#方法、类#成员]
     * @param
     */
    public NewsInfo getNewsInfoPrev(Integer newsId, Integer type, Integer platformId)throws Exception;
    
    /**
     * 更新新闻的浏览数
     * <一句话功能简述>
     * <功能详细描述>
     * @param newsInfo
     * @returns
     * @see [类、类#方法、类#成员]
     * @param
     */
    public int updaBrowseNumber(NewsInfo newsInfo)throws Exception;
    
    /**
       * @description:  查询当前新闻相关阅读集合
       * @param newsInfo
       * @param pageNum
       * @param pageSize
       * @param newsId
       * @param pageUpnewsId
       * @param nextNewsId
       * @return
       * @throws Exception
       * @since V1.0.0
       * @author 陈权
       * @data 2015年5月29日
     */
    public Page<NewsInfo> queryOtherNewsInfoPage(NewsInfo newsInfo,Integer pageNum,Integer pageSize,String newsId,String pageUpnewsId,String nextNewsId) throws Exception;

    
    /**
     * @Description: 添加新闻评论或者评论回复
     * @author wangpinwen
     * @date 2015年9月5日 下午10:15:36 
     * @version V1.0.0
     * @param newsComment
     * @throws Exception
     */
	public void addCommentOrRevert(NewsComment newsComment ) throws Exception;
	
	/**
	 * @Description: 查询新闻评论信息
	 * @author wangpinwen
	 * @date 2015年9月9日 下午10:00:28 
	 * @version V1.0.0
	 * @param hql
	 * @param queryParams
	 * @param pageNum
	 * @param pageSize
	 * @return
	 * @throws Exception
	 */
	public Page<NewsComment> queryCommentPage(String hql ,Object[] queryParams , int pageNum, int pageSize ) throws Exception;
    
}
